package org.alex.jdk8.stream;

import java.util.ArrayList;
import java.util.List;

public class StreamT1 {
	public static void main(String[] args) {
		List<String> stringCollection = new ArrayList<>();
		stringCollection.add("ddd2");
		stringCollection.add("aaa2");
		stringCollection.add("bbb1");
		stringCollection.add("aaa1");
		stringCollection.add("bbb3");
		stringCollection.add("ccc");
		stringCollection.add("bbb2");
		stringCollection.add("ddd1");
		// Filter
		// Filter 接收一个断定来过滤流的所有元素.这个操作是 intermediate 可以让我们调用另一个流的操作 (forEach)
		// 的结果. ForEach 接收一个 consumer 来执行过滤流的每一个元素. ForEach 是一个 terminal 操作. 他是
		// void,因此我们不能调用另一个流的操作.
		stringCollection.stream().filter((s) -> s.startsWith("a")).forEach(System.out::println);
		// "aaa2", "aaa1"
		// Sorted
		// Sorted 是一个 intermediate 操作产生流的已排序结果. 元素是默认自然排序，除非你指定了一个 Comparator.
		stringCollection.stream().sorted().filter((s) -> s.startsWith("a")).forEach(System.out::println);

	}
}
